import { initMixin } from './init'
import { stateMixin } from './state'
import { renderMixin } from './render'
import { eventsMixin } from './events'
import { lifecycleMixin } from './lifecycle'
import { warn } from '../util/index'

function Vue (options) {
  if (process.env.NODE_ENV !== 'production' &&
    !(this instanceof Vue)
  ) {
    warn('Vue is a constructor and should be called with the `new` keyword')
  }
  this._init(options)
}

//这里主要用于添加实例属性和方法

initMixin(Vue)// 添加_init方法
stateMixin(Vue)// 添加Vue对象上属性操作相关的方法。
eventsMixin(Vue)// 添加Vue对象上事件相关的方法。
lifecycleMixin(Vue)// 添加Vue对象上生命周期以及更新渲染相关的方法。
renderMixin(Vue)// 渲染相关的方法，以及内置指令

export default Vue
